import cv2
import numpy as np

# 视频参数
frame_width = 640
frame_height = 480
fps = 30
duration = 10  # 视频时长（秒）
total_frames = fps * duration

# 创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, fps, (frame_width, frame_height))

# 生成左边部分方波变化的灰度值
left_wave_period = 6  # 左边部分的周期（秒）
left_wave_freq = 1 / left_wave_period
left_gray_values = (np.sin(2 * np.pi * left_wave_freq * np.arange(total_frames)) + 1) * 127

# 生成右边部分方波变化的灰度值，延迟0.1秒
right_wave_period = 6  # 右边部分的周期（秒）
right_wave_freq = 1 / right_wave_period
right_gray_values = (np.sin(2 * np.pi * right_wave_freq * np.arange(total_frames) - 0.1 * 2 * np.pi) + 1) * 127

for i in range(total_frames):
    # 创建一个新的帧
    frame = np.zeros((frame_height, frame_width, 3), np.uint8)

    # 左边部分填充
    left_column = int(frame_width * 0.5)
    frame[:, :left_column] = left_gray_values[i]

    # 右边部分填充
    frame[:, left_column:] = right_gray_values[i]

    # 写入帧到视频
    out.write(frame)

# 释放VideoWriter
out.release()
